Popular Searches
Popular Course Categories
Popular Courses

Selenium WebDriver

Introduction to Selenium

Selenium WebDriver

Selenium WebDriver is a browser automation technology used to control web browsers programmatically. It allows automation scripts to open browsers, navigate to web pages, locate web elements, enter text, click buttons, select options, handle alerts, work with frames and windows, manage cookies, capture screenshots, and perform many other browser interactions.

WebDriver provides a programming interface through which automation code communicates with a browser. Selenium supports major browsers through browser-specific driver implementations, allowing the same general automation concepts to be used across different browsers and operating systems.

WebDriver is an important part of the Selenium project and is commonly used for functional testing, regression testing, end-to-end testing, cross-browser testing, smoke testing, UI automation, and other browser automation tasks.


 

1. What is Selenium WebDriver?

Selenium WebDriver is an API and browser automation mechanism that allows a program to control a web browser as if a real user were interacting with it.

Instead of manually opening a browser and performing actions such as clicking, typing, navigating, and submitting forms, WebDriver allows these actions to be automated using programming languages such as Java, Python, C#, JavaScript, Ruby, and Kotlin.

Simple Definition

Selenium WebDriver is a browser automation API used to control web browsers programmatically and automate web application testing.

Example

WebDriver driver = new ChromeDriver();

 

driver.get("https://example.com");

 

System.out.println(driver.getTitle());

 

driver.quit();

The above program starts Chrome, opens a web page, retrieves the page title, and closes the browser.


 

2. Why is Selenium WebDriver Used?

Manual testing requires testers to repeatedly perform the same browser operations. WebDriver can automate these repetitive operations and execute them consistently.

  • Automating web application testing
  • Automating regression test cases
  • Performing functional testing
  • Performing end-to-end testing
  • Testing applications across multiple browsers
  • Testing web applications on different operating systems
  • Automating repetitive browser tasks
  • Validating forms and user workflows
  • Performing smoke and sanity testing
  • Supporting large automation suites


 

3. Selenium WebDriver Architecture

Selenium WebDriver uses a communication model in which automation code communicates with the browser through Selenium's WebDriver interfaces and browser-specific implementations.

Basic Architecture

Test Script

    |

    v

Selenium Language Binding

    |

    v

WebDriver API

    |

    v

Browser Driver

    |

    v

Web Browser

    |

    v

Web Application

Example Flow

Java Code

   |

   v

WebDriver API

   |

   v

ChromeDriver

   |

   v

Google Chrome

   |

   v

Web Application

The Selenium script sends commands through the WebDriver API. The appropriate browser driver communicates with the browser and performs the requested operation.


 

4. Main Components of Selenium WebDriver

Component Description
WebDriver API Provides programming interfaces for browser automation.
Language Binding Allows Selenium to be used with languages such as Java, Python, C#, JavaScript, Ruby, and Kotlin.
Browser Driver Acts as the communication layer between Selenium and a specific browser.
Browser The actual browser being controlled, such as Chrome, Firefox, Edge, or Safari.
Web Application The website or web application being automated.


 

5. Supported Browsers

Selenium WebDriver supports automation of major browsers through their respective WebDriver implementations.

Browser Common Driver
Google Chrome ChromeDriver
Mozilla Firefox GeckoDriver
Microsoft Edge EdgeDriver
Safari SafariDriver

The exact driver setup can vary depending on the browser and Selenium language binding.


 

6. Selenium WebDriver with Java

Java is one of the commonly used programming languages for Selenium automation. Selenium provides Java bindings that allow developers and testers to create browser automation programs.

Basic Java Example

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

 

public class SeleniumDemo {

    public static void main(String[] args) {

 

        WebDriver driver = new ChromeDriver();

 

        driver.get("https://www.google.com");

 

        System.out.println(driver.getTitle());

 

        driver.quit();

    }

}


 

7. Creating a WebDriver Object

The WebDriver object represents the browser session that Selenium controls.

WebDriver driver = new ChromeDriver();

Here:

  • WebDriver is the Selenium interface.
  • driver is the reference variable.
  • ChromeDriver() creates a Chrome browser session.

Firefox Example

WebDriver driver = new FirefoxDriver();

Edge Example

WebDriver driver = new EdgeDriver();


 

8. Starting a Browser Session

A browser session is created when the WebDriver object starts a browser.

WebDriver driver = new ChromeDriver();

The session remains active until the driver is closed or quit.

Complete Example

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

 

public class BrowserLaunch {

    public static void main(String[] args) {

 

        WebDriver driver = new ChromeDriver();

 

        driver.get("https://www.selenium.dev");

 

        driver.quit();

    }

}


 

9. Selenium Manager

Modern Selenium installations can use Selenium Manager to assist with browser driver management. Selenium Manager is shipped with Selenium and can automatically discover, download, and manage appropriate drivers when a driver is not otherwise provided.

This can reduce the need for manually downloading and configuring browser driver executables.

Example

WebDriver driver = new ChromeDriver();

Depending on the Selenium environment and configuration, Selenium Manager can help resolve the appropriate driver automatically.


 

10. Opening a Website

The get() method is used to navigate the browser to a specified URL.

driver.get("https://www.google.com");

Example

WebDriver driver = new ChromeDriver();

 

driver.get("https://www.selenium.dev");

 

driver.quit();


 

11. Browser Navigation Methods

Selenium provides several navigation methods for controlling browser navigation.

get()

driver.get("https://www.google.com");

navigate().to()

driver.navigate().to("https://www.google.com");

Back

driver.navigate().back();

Forward

driver.navigate().forward();

Refresh

driver.navigate().refresh();


 

12. Getting the Page Title

The getTitle() method returns the title of the current web page.

String title = driver.getTitle();

 

System.out.println(title);

Example

driver.get("https://www.google.com");

 

String title = driver.getTitle();

 

System.out.println("Page Title: " + title);


 

13. Getting the Current URL

The getCurrentUrl() method returns the URL of the current browser page.

String currentUrl = driver.getCurrentUrl();

 

System.out.println(currentUrl);

Validation Example

String currentUrl = driver.getCurrentUrl();

 

if (currentUrl.contains("google")) {

    System.out.println("Correct page opened");

}


 

14. Finding Web Elements

Finding elements is one of the most important parts of Selenium automation. Selenium uses locator strategies to identify elements in the DOM.

Examples of elements include:

  • Text fields
  • Buttons
  • Links
  • Checkboxes
  • Radio buttons
  • Dropdowns
  • Images
  • Tables
  • Forms

Selenium provides locator strategies including ID, name, class name, tag name, CSS selector, XPath, link text, and partial link text.


 

15. Locator Strategies

Locator Example
ID By.id("username")
Name By.name("email")
Class Name By.className("login-button")
Tag Name By.tagName("input")
Link Text By.linkText("Login")
Partial Link Text By.partialLinkText("Log")
CSS Selector By.cssSelector("#username")
XPath By.xpath("//input[@id='username']")


 

16. Using ID Locator

If an element has a unique ID, ID is generally a simple and readable locator.

WebElement username = driver.findElement(By.id("username"));

 

username.sendKeys("admin");


 

17. Using Name Locator

WebElement email = driver.findElement(By.name("email"));

 

email.sendKeys("[email protected]");


 

18. Using Class Name Locator

WebElement button = driver.findElement(By.className("login-button"));

 

button.click();

Compound class names should not be passed as a single class-name locator. When multiple classes are involved, CSS selectors are often more suitable.


 

19. Using Tag Name Locator

WebElement input = driver.findElement(By.tagName("input"));

 

input.sendKeys("Selenium");

Tag-name locators can match many elements, so they are often more useful when combined with other strategies or when working with a specific structure.


 

20. Using Link Text

Link text can be used to locate an anchor element using its visible text.

WebElement loginLink =

        driver.findElement(By.linkText("Login"));

 

loginLink.click();


 

21. Using Partial Link Text

WebElement link =

        driver.findElement(By.partialLinkText("Log"));

 

link.click();

Partial link text is useful when the complete visible text is not convenient to use, but it should be used carefully if many links contain the same text.


 

22. Using CSS Selector

CSS selectors are powerful locators for identifying elements based on IDs, classes, attributes, relationships, and other CSS selector patterns.

ID Selector

driver.findElement(By.cssSelector("#username"));

Class Selector

driver.findElement(By.cssSelector(".login-button"));

Attribute Selector

driver.findElement(By.cssSelector("input[name='email']"));

Multiple Conditions

driver.findElement(

    By.cssSelector("input[type='text'][name='username']")

);


 

23. Using XPath

XPath is a locator technique used to identify elements based on their structure and attributes in the DOM.

XPath by ID

driver.findElement(

    By.xpath("//input[@id='username']")

);

XPath by Attribute

driver.findElement(

    By.xpath("//input[@name='email']")

);

XPath by Text

driver.findElement(

    By.xpath("//button[text()='Login']")

);

XPath with contains()

driver.findElement(

    By.xpath("//button[contains(text(),'Login')]")

);

XPath with Multiple Conditions

driver.findElement(

    By.xpath("//input[@type='text' and @name='username']")

);


 

24. WebElement

WebElement represents an element located on a web page.

WebElement username =

        driver.findElement(By.id("username"));

Once an element is found, Selenium provides methods to interact with it.


 

25. Common WebElement Methods

Method Purpose
click() Clicks an element.
sendKeys() Enters text or keyboard input.
clear() Clears editable text.
getText() Returns visible text.
getAttribute() Returns an attribute value.
isDisplayed() Checks whether the element is displayed.
isEnabled() Checks whether the element is enabled.
isSelected() Checks whether a selectable element is selected.


 

26. Entering Text

The sendKeys() method is used to enter text into editable fields.

WebElement username =

        driver.findElement(By.id("username"));

 

username.sendKeys("admin");


 

27. Clearing Text

WebElement username =

        driver.findElement(By.id("username"));

 

username.clear();

 

username.sendKeys("newuser");


 

28. Clicking Elements

WebElement loginButton =

        driver.findElement(By.id("login"));

 

loginButton.click();

The click operation can be used with buttons, links, checkboxes, radio buttons, and other clickable elements.


 

29. Reading Text from an Element

WebElement message =

        driver.findElement(By.id("message"));

 

String text = message.getText();

 

System.out.println(text);


 

30. Checking Element State

isDisplayed()

if (element.isDisplayed()) {

    System.out.println("Element is visible");

}

isEnabled()

if (element.isEnabled()) {

    System.out.println("Element is enabled");

}

isSelected()

if (checkbox.isSelected()) {

    System.out.println("Checkbox is selected");

}


 

31. Browser Window Management

Selenium provides methods for controlling the browser window.

Maximize Window

driver.manage().window().maximize();

Minimize Window

driver.manage().window().minimize();

Fullscreen

driver.manage().window().fullscreen();


 

32. Handling Alerts

WebDriver provides APIs for interacting with native JavaScript alert, confirmation, and prompt dialogs.

Accept Alert

Alert alert = driver.switchTo().alert();

 

alert.accept();

Dismiss Alert

Alert alert = driver.switchTo().alert();

 

alert.dismiss();

Get Alert Text

String message =

        driver.switchTo().alert().getText();

 

System.out.println(message);

Enter Text in Prompt

Alert alert = driver.switchTo().alert();

 

alert.sendKeys("Selenium");

 

alert.accept();


 

33. Handling Frames and IFrames

Some web pages contain an iframe where the content belongs to a separate browsing context. Selenium must switch into the frame before interacting with elements inside it.

Switch by Index

driver.switchTo().frame(0);

Switch by Name or ID

driver.switchTo().frame("paymentFrame");

Switch Using WebElement

WebElement frame =

        driver.findElement(By.id("paymentFrame"));

 

driver.switchTo().frame(frame);

Return to Main Document

driver.switchTo().defaultContent();

Return to Parent Frame

driver.switchTo().parentFrame();


 

34. Handling Multiple Windows and Tabs

Selenium can work with multiple browser windows and tabs by using window handles.

Get Current Window Handle

String parentWindow =

        driver.getWindowHandle();

Get All Window Handles

Set windows =

        driver.getWindowHandles();

Switch to Another Window

for (String window : driver.getWindowHandles()) {

 

    if (!window.equals(parentWindow)) {

        driver.switchTo().window(window);

        break;

    }

}

Window handles are commonly used when a click opens another tab or browser window.


 

35. Handling Dropdowns

For a standard HTML select element, Selenium provides the Select class.

Select by Visible Text

Select country =

        new Select(driver.findElement(By.id("country")));

 

country.selectByVisibleText("India");

Select by Value

country.selectByValue("IN");

Select by Index

country.selectByIndex(2);

Get All Options

List options =

        country.getOptions();

 

for (WebElement option : options) {

    System.out.println(option.getText());

}


 

36. Checkboxes

Checkboxes can be selected by clicking them when they are not already selected.

WebElement checkbox =

        driver.findElement(By.id("terms"));

 

if (!checkbox.isSelected()) {

    checkbox.click();

}


 

37. Radio Buttons

WebElement male =

        driver.findElement(By.id("male"));

 

if (!male.isSelected()) {

    male.click();

}


 

38. Handling Cookies

Selenium provides methods for adding, reading, and deleting browser cookies.

Add Cookie

Cookie cookie =

        new Cookie("username", "admin");

 

driver.manage().addCookie(cookie);

Get Cookie

Cookie cookie =

        driver.manage().getCookieNamed("username");

Delete Cookie

driver.manage().deleteCookieNamed("username");

Delete All Cookies

driver.manage().deleteAllCookies();


 

39. Taking Screenshots

Screenshots are useful when debugging failed test cases or recording the state of the browser during test execution.

File screenshot =

        ((TakesScreenshot) driver)

        .getScreenshotAs(OutputType.FILE);

Example

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

import java.io.File;

 

File screenshot =

        ((TakesScreenshot) driver)

        .getScreenshotAs(OutputType.FILE);


 

40. JavaScriptExecutor

Selenium normally interacts with the browser through WebDriver commands. JavaScriptExecutor can be used when JavaScript execution is required in the browser context.

Execute JavaScript

JavascriptExecutor js =

        (JavascriptExecutor) driver;

 

js.executeScript("alert('Hello Selenium');");

Scroll the Page

JavascriptExecutor js =

        (JavascriptExecutor) driver;

 

js.executeScript(

    "window.scrollTo(0, document.body.scrollHeight);"

);

Scroll to an Element

WebElement element =

        driver.findElement(By.id("footer"));

 

JavascriptExecutor js =

        (JavascriptExecutor) driver;

 

js.executeScript(

    "arguments[0].scrollIntoView(true);",

    element

);


 

41. Selenium Waits

Synchronization is essential when automating modern web applications because page elements may be loaded dynamically. Selenium provides waiting strategies to synchronize automation with the state of the application.

Common waiting approaches include implicit waits and explicit waits. Selenium documentation recommends understanding how different wait strategies interact and avoiding unnecessary combinations that can produce unpredictable timeout behavior.


 

42. Implicit Wait

An implicit wait tells WebDriver to wait for a specified amount of time when locating elements before returning an error.

driver.manage()

      .timeouts()

      .implicitlyWait(Duration.ofSeconds(5));

The implicit wait is a global setting for element location calls during the session.


 

43. Explicit Wait

Explicit waits are used to wait for a specific condition before continuing execution.

WebDriverWait wait =

        new WebDriverWait(driver, Duration.ofSeconds(10));

 

WebElement loginButton =

        wait.until(

            ExpectedConditions.elementToBeClickable(

                By.id("login")

            )

        );

 

loginButton.click();

Common Expected Conditions

  • elementToBeClickable()
  • visibilityOfElementLocated()
  • presenceOfElementLocated()
  • textToBePresentInElement()
  • titleContains()
  • urlContains()
  • alertIsPresent()
  • frameToBeAvailableAndSwitchToIt()


 

44. Fluent Wait

Fluent Wait provides more control over how Selenium waits for a condition, including timeout and polling behavior.

Wait wait =

        new FluentWait<>(driver)

        .withTimeout(Duration.ofSeconds(20))

        .pollingEvery(Duration.ofSeconds(2))

        .ignoring(NoSuchElementException.class);

Fluent waits can be useful when an application changes state dynamically and a customized polling strategy is required.


 

45. Actions Class

The Actions API provides a higher-level interface for complex user input such as mouse movement, hover, drag and drop, double-click, and keyboard combinations.

Mouse Hover

Actions actions = new Actions(driver);

 

WebElement menu =

        driver.findElement(By.id("menu"));

 

actions.moveToElement(menu).perform();

Double Click

actions.doubleClick(element).perform();

Right Click

actions.contextClick(element).perform();

Drag and Drop

actions.dragAndDrop(source, target).perform();


 

46. Keyboard Actions

Actions can also be used for keyboard interactions.

Actions actions = new Actions(driver);

 

actions

    .keyDown(Keys.CONTROL)

    .sendKeys("a")

    .keyUp(Keys.CONTROL)

    .perform();

Press Enter

element.sendKeys(Keys.ENTER);

Press Tab

element.sendKeys(Keys.TAB);


 

47. Closing Browser Sessions

close()

The close() method closes the current browser window or tab.

driver.close();

quit()

The quit() method ends the WebDriver session and closes the associated browser windows.

driver.quit();

For normal test cleanup, quit() is commonly used at the end of the test to terminate the complete WebDriver session.


 

48. Complete Selenium WebDriver Example

The following example demonstrates a basic WebDriver workflow: starting Chrome, opening a page, reading the title, finding elements, entering text, clicking a button, reading a message, and closing the browser.

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

 

public class WebDriverExample {

 

    public static void main(String[] args) {

 

        WebDriver driver = new ChromeDriver();

 

        try {

 

            driver.get(

                "https://www.selenium.dev/selenium/web/web-form.html"

            );

 

            String title = driver.getTitle();

 

            System.out.println("Title: " + title);

 

            WebElement textBox =

                driver.findElement(By.name("my-text"));

 

            WebElement submitButton =

                driver.findElement(By.cssSelector("button"));

 

            textBox.sendKeys("Selenium");

 

            submitButton.click();

 

            WebElement message =

                driver.findElement(By.id("message"));

 

            System.out.println(

                "Message: " + message.getText()

            );

 

        } finally {

 

            driver.quit();

        }

    }

}

This workflow represents a common Selenium automation pattern: start a session, navigate, locate elements, interact with them, validate results, and terminate the session.


 

49. Selenium WebDriver Execution Flow

Start Test

    |

    v

Create WebDriver

    |

    v

Start Browser Session

    |

    v

Open Application URL

    |

    v

Locate Web Element

    |

    v

Perform Action

    |

    v

Wait for Application State

    |

    v

Validate Result

    |

    v

Capture Evidence if Required

    |

    v

Close/Terminate Browser

    |

    v

End Test


 

50. WebDriver and Test Framework

WebDriver itself provides browser automation capabilities. It is not a complete test framework.

In real automation projects, WebDriver is commonly combined with a test framework such as TestNG, JUnit, pytest, or another language-specific testing framework.

Typical Automation Stack

Test Framework

       |

       v

Automation Framework

       |

       v

Selenium WebDriver

       |

       v

Browser Driver

       |

       v

Browser

       |

       v

Web Application


 

51. Selenium WebDriver with TestNG

TestNG can be used to organize Selenium test cases, setup methods, teardown methods, assertions, and test execution.

Example

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.Assert;

import org.testng.annotations.AfterMethod;

import org.testng.annotations.BeforeMethod;

import org.testng.annotations.Test;

 

public class LoginTest {

 

    WebDriver driver;

 

    @BeforeMethod

    public void setup() {

        driver = new ChromeDriver();

        driver.get("https://example.com");

    }

 

    @Test

    public void verifyTitle() {

 

        String title = driver.getTitle();

 

        Assert.assertTrue(title.length() > 0);

    }

 

    @AfterMethod

    public void tearDown() {

        driver.quit();

    }

}


 

52. Assertions with Selenium

Assertions are used to compare actual application behavior with expected behavior.

Example

String actualTitle = driver.getTitle();

 

String expectedTitle = "Example Domain";

 

Assert.assertEquals(actualTitle, expectedTitle);

Common Assertions

  • Assert title
  • Assert URL
  • Assert visible text
  • Assert element visibility
  • Assert element state
  • Assert expected page content
  • Assert successful navigation


 

53. Common Selenium WebDriver Exceptions

Exception Common Cause
NoSuchElementException Element could not be located.
TimeoutException Wait condition was not satisfied within the timeout.
ElementNotInteractableException Element was found but could not be interacted with.
ElementClickInterceptedException Another element prevented the click.
StaleElementReferenceException The previously located element is no longer valid in the current DOM.
NoSuchFrameException Requested frame could not be found.
NoSuchWindowException Requested window or tab could not be found.
UnexpectedAlertPresentException An unexpected alert is present.


 

54. Handling NoSuchElementException

NoSuchElementException usually occurs when Selenium cannot find an element using the provided locator.

Possible Reasons

  • Incorrect locator
  • Element has not loaded yet
  • Element is inside an iframe
  • Element belongs to another window or tab
  • DOM structure has changed

Better Approach

WebDriverWait wait =

        new WebDriverWait(driver, Duration.ofSeconds(10));

 

WebElement element =

        wait.until(

            ExpectedConditions.visibilityOfElementLocated(

                By.id("username")

            )

        );


 

55. Handling StaleElementReferenceException

A stale element reference can occur when the DOM changes after the element was located and the previously stored element reference is no longer valid.

Example Strategy

WebElement element =

        driver.findElement(By.id("username"));

 

element.click();

If the page dynamically replaces the element, locate the element again instead of relying on an outdated reference.


 

56. Common WebDriver Problems and Solutions

Problem Possible Solution
Element not found Verify locator and page state.
Element not clickable Use an appropriate explicit wait and verify overlays.
Element inside iframe Switch to the appropriate frame.
Element in another tab Switch using window handles.
Dynamic content Use appropriate explicit synchronization.
Wrong browser page Verify navigation and window context.
Browser does not close Use driver.quit() in teardown or finally.


 

57. Best Practices for Selenium WebDriver

  • Use stable and meaningful locators.
  • Prefer unique IDs when they are reliable.
  • Use CSS selectors or XPath when appropriate.
  • Avoid unnecessary absolute XPath expressions.
  • Use explicit waits for specific dynamic conditions.
  • Avoid unnecessary hard-coded sleep statements.
  • Do not mix implicit and explicit waits.
  • Keep test data separate from test logic.
  • Use Page Object Model for maintainable projects.
  • Use setup and teardown methods.
  • Capture screenshots when useful for failures.
  • Use assertions to validate expected behavior.
  • Keep locators maintainable.
  • Reuse common browser operations through utility methods.
  • Always terminate browser sessions properly.


 

58. Avoid Thread.sleep() for Synchronization

A fixed sleep pauses execution for a predetermined amount of time regardless of whether the application is ready.

Less Flexible Approach

Thread.sleep(5000);

Condition-Based Approach

WebDriverWait wait =

        new WebDriverWait(driver, Duration.ofSeconds(10));

 

wait.until(

    ExpectedConditions.elementToBeClickable(

        By.id("login")

    )

);

Condition-based synchronization is generally more appropriate for dynamic applications because the test can continue when the required condition is satisfied.


 

59. Page Object Model with WebDriver

The Page Object Model is a design pattern commonly used to organize Selenium automation code. Each important application page or component can have a corresponding class containing locators and operations.

LoginPage.java

public class LoginPage {

 

    WebDriver driver;

 

    By username =

        By.id("username");

 

    By password =

        By.id("password");

 

    By loginButton =

        By.id("login");

 

    public LoginPage(WebDriver driver) {

        this.driver = driver;

    }

 

    public void enterUsername(String value) {

        driver.findElement(username)

              .sendKeys(value);

    }

 

    public void enterPassword(String value) {

        driver.findElement(password)

              .sendKeys(value);

    }

 

    public void clickLogin() {

        driver.findElement(loginButton)

              .click();

    }

}

Test Class

LoginPage loginPage =

        new LoginPage(driver);

 

loginPage.enterUsername("admin");

loginPage.enterPassword("password");

loginPage.clickLogin();


 

60. WebDriver Automation Framework Structure

Selenium Automation Project

        |

        +-- Tests

        |

        +-- Pages

        |

        +-- Utilities

        |

        +-- Test Data

        |

        +-- Configuration

        |

        +-- Reports

        |

        +-- Screenshots

        |

        +-- Drivers / Browser Configuration

        |

        +-- Test Runner


 

61. Practical Selenium WebDriver Login Automation

A common real-world Selenium project is automating a login workflow.

Test Scenario

  1. Open the application.
  2. Locate username field.
  3. Enter username.
  4. Locate password field.
  5. Enter password.
  6. Click Login.
  7. Wait for the dashboard.
  8. Verify dashboard content.
  9. Close the browser.

Example

WebDriver driver = new ChromeDriver();

 

try {

 

    driver.get("https://example.com/login");

 

    WebDriverWait wait =

        new WebDriverWait(

            driver,

            Duration.ofSeconds(10)

        );

 

    WebElement username =

        wait.until(

            ExpectedConditions.visibilityOfElementLocated(

                By.id("username")

            )

        );

 

    username.sendKeys("admin");

 

    driver.findElement(By.id("password"))

          .sendKeys("password");

 

    driver.findElement(By.id("login"))

          .click();

 

    WebElement dashboard =

        wait.until(

            ExpectedConditions.visibilityOfElementLocated(

                By.id("dashboard")

            )

        );

 

    System.out.println(

        "Dashboard displayed: " +

        dashboard.isDisplayed()

    );

 

} finally {

 

    driver.quit();

}


 

62. Practical Selenium WebDriver Test Flow

Test Start

    |

    v

Launch Browser

    |

    v

Open Login Page

    |

    v

Locate Username

    |

    v

Enter Username

    |

    v

Locate Password

    |

    v

Enter Password

    |

    v

Click Login

    |

    v

Wait for Dashboard

    |

    v

Verify Dashboard

    |

    v

Capture Screenshot if Required

    |

    v

Quit Browser

    |

    v

Test Complete


 

63. Selenium WebDriver for Cross-Browser Testing

One of the important uses of Selenium WebDriver is cross-browser testing. The same functional workflow can be executed against different supported browsers.

Chrome

WebDriver driver = new ChromeDriver();

Firefox

WebDriver driver = new FirefoxDriver();

Edge

WebDriver driver = new EdgeDriver();

This makes it possible to test whether a web application behaves consistently across browser environments.


 

64. Selenium WebDriver for Regression Testing

Regression testing verifies that existing functionality continues to work after application changes.

Typical Regression Flow

Application Change

        |

        v

Run Automated Regression Suite

        |

        v

Launch Browser

        |

        v

Execute Test Cases

        |

        v

Validate Expected Results

        |

        v

Generate Results

        |

        v

Analyze Failures

Automation can be especially useful for repetitive regression scenarios because the same steps can be executed repeatedly.


 

65. Selenium WebDriver for Functional Testing

Functional testing checks whether application features behave according to expected requirements.

Examples

  • Login functionality
  • Registration functionality
  • Search functionality
  • Shopping cart functionality
  • Checkout workflow
  • Form submission
  • Password reset workflow
  • Navigation functionality


 

66. Selenium WebDriver for End-to-End Testing

End-to-end testing validates complete user journeys through an application.

Example E-Commerce Flow

Open Website

    |

    v

Login

    |

    v

Search Product

    |

    v

Open Product

    |

    v

Add to Cart

    |

    v

Open Cart

    |

    v

Checkout

    |

    v

Enter Address

    |

    v

Select Payment

    |

    v

Place Order

    |

    v

Verify Confirmation


 

67. Selenium WebDriver and Web Elements

Most Selenium automation consists of finding web elements and performing actions on them. Web elements, locator strategies, finding elements, interacting with elements, and retrieving element information are core WebDriver concepts.

Element Typical Selenium Action
Text Box sendKeys(), clear()
Button click()
Checkbox click(), isSelected()
Radio Button click(), isSelected()
Dropdown Select class
Link click()
Label getText()


 

68. Selenium WebDriver Interview Questions

1. What is Selenium WebDriver?

Selenium WebDriver is a browser automation API that allows programs to control web browsers and automate web application workflows.

2. What is WebDriver?

WebDriver is a programming interface and protocol for controlling web browsers through automation code.

3. What is ChromeDriver?

ChromeDriver is the browser-specific driver implementation used for controlling Chrome through WebDriver.

4. What is a WebElement?

WebElement represents an element located within a web page, such as a button, input, link, or checkbox.

5. What are Selenium locators?

Locators are mechanisms used to identify elements on a web page. Examples include ID, name, class name, tag name, link text, CSS selector, and XPath.

6. Difference between close() and quit()?

close() closes the current browser window or tab, while quit() terminates the complete WebDriver session.

7. What is an implicit wait?

An implicit wait is a global element-location timeout configured for a WebDriver session.

8. What is an explicit wait?

An explicit wait waits for a particular condition before continuing execution.

9. Why are waits required?

Waits help synchronize automation with dynamically changing application state.

10. What is XPath?

XPath is an expression-based locator mechanism used to identify elements in a DOM structure.

11. What is CSS Selector?

A CSS selector is a selector pattern used to identify elements using CSS-style syntax.

12. How do you handle alerts?

driver.switchTo().alert().accept();

13. How do you switch to an iframe?

driver.switchTo().frame(frameElement);

14. How do you switch between windows?

driver.switchTo().window(windowHandle);

15. How do you take a screenshot?

((TakesScreenshot) driver)

    .getScreenshotAs(OutputType.FILE);


 

69. Selenium WebDriver Advantages

  • Supports major browsers.
  • Supports multiple programming languages.
  • Provides browser-level automation.
  • Supports real user-like browser interactions.
  • Works with modern web applications.
  • Supports parallel and remote execution through Selenium Grid.
  • Can be integrated with testing frameworks.
  • Can be integrated into CI/CD automation pipelines.
  • Supports reusable automation frameworks.
  • Provides extensive browser interaction capabilities.


 

70. Selenium WebDriver Limitations

  • It is primarily focused on web browser automation.
  • It does not replace a complete test framework.
  • Dynamic applications require careful synchronization.
  • Locator maintenance may be required when the UI changes.
  • CAPTCHA and certain anti-automation mechanisms may prevent straightforward automation.
  • Highly dynamic applications can require robust framework design.
  • Test execution infrastructure must be managed for larger automation projects.


 

71. Selenium WebDriver Best Practices Checklist

  • Use meaningful test names.
  • Use stable locators.
  • Keep locators separate from business logic when appropriate.
  • Use Page Object Model for larger projects.
  • Use explicit waits for specific conditions.
  • Avoid unnecessary Thread.sleep().
  • Do not mix implicit and explicit waits.
  • Use try-finally or framework teardown for browser cleanup.
  • Keep test data independent from test implementation.
  • Use reusable utility methods.
  • Capture screenshots for important failures.
  • Use assertions for validation.
  • Keep browser configuration centralized.
  • Run tests across required browsers.
  • Maintain a clean project structure.


 

72. Selenium WebDriver Mini Project

Project: Automated Login Test

The objective of this mini project is to automate a basic login workflow using Selenium WebDriver.

Requirements

  • Java
  • Selenium WebDriver
  • Chrome or another supported browser
  • TestNG or JUnit
  • Maven or Gradle

Project Structure

SeleniumLoginProject

|

+-- src

|   |

|   +-- test

|       |

|       +-- java

|           |

|           +-- LoginTest.java

|

+-- pages

|   |

|   +-- LoginPage.java

|

+-- utils

|   |

|   +-- DriverFactory.java

|

+-- test-data

|

+-- screenshots

|

+-- reports

|

+-- pom.xml

Test Cases

  1. Verify login page opens.
  2. Verify username field is displayed.
  3. Verify password field is displayed.
  4. Enter valid username.
  5. Enter valid password.
  6. Click login.
  7. Verify dashboard.
  8. Test invalid username.
  9. Test invalid password.
  10. Test empty credentials.


 

73. Real-World Selenium Automation Workflow

Requirement Analysis

        |

        v

Identify Test Scenarios

        |

        v

Identify Web Elements

        |

        v

Create Locators

        |

        v

Create Page Objects

        |

        v

Write Test Cases

        |

        v

Add Wait Strategies

        |

        v

Add Assertions

        |

        v

Run Tests

        |

        v

Capture Failures

        |

        v

Generate Reports

        |

        v

Fix Automation Issues

        |

        v

Execute Regression Suite


 

74. Important Selenium WebDriver Concepts to Master

Concept Importance
WebDriver Foundation of browser automation.
WebElement Used for interacting with page elements.
Locators Used to identify elements.
XPath Useful for complex element identification.
CSS Selector Powerful and concise element identification.
Waits Important for dynamic applications.
Alerts Used for JavaScript dialogs.
Frames Required for iframe-based content.
Windows/Tabs Required for multiple browser contexts.
Actions API Used for advanced mouse and keyboard interactions.
Cookies Used for browser cookie management.
Screenshots Useful for debugging and reporting.
Page Object Model Improves framework maintainability.


 

75. Selenium WebDriver Learning Roadmap

Selenium Basics

      |

      v

WebDriver

      |

      v

Browser Launch

      |

      v

Navigation

      |

      v

WebElements

      |

      v

Locators

      |

      v

XPath & CSS

      |

      v

Browser Interactions

      |

      v

Waits

      |

      v

Dropdowns

      |

      v

Alerts

      |

      v

Frames

      |

      v

Windows & Tabs

      |

      v

Actions API

      |

      v

Cookies

      |

      v

Screenshots

      |

      v

JavaScriptExecutor

      |

      v

TestNG/JUnit

      |

      v

Page Object Model

      |

      v

Automation Framework

      |

      v

Selenium Grid

      |

      v

CI/CD Integration


 

76. Selenium WebDriver Course Resources

To learn Selenium WebDriver in a structured course environment, you can explore the following JustAcademy resources:


 

77. Summary

Selenium WebDriver is a powerful browser automation API used to control web browsers programmatically. It provides capabilities for browser navigation, element identification, user interactions, synchronization, alerts, frames, windows, tabs, cookies, screenshots, JavaScript execution, and many other browser automation tasks.

A strong Selenium automation engineer should understand not only how to launch a browser, but also how to create reliable locators, synchronize with dynamic applications, design maintainable page objects, handle browser contexts, validate application behavior, manage test data, and organize tests into a scalable automation framework.

The fundamental WebDriver workflow can be remembered as:

Launch Browser

      ↓

Open Application

      ↓

Find Element

      ↓

Perform Action

      ↓

Wait for Condition

      ↓

Validate Result

      ↓

Capture Evidence

      ↓

Quit Browser


 

78. Learning Outcomes

After completing this topic, learners should be able to:

  • Explain Selenium WebDriver.
  • Understand WebDriver architecture.
  • Create browser sessions.
  • Open and navigate web pages.
  • Identify web elements.
  • Use Selenium locator strategies.
  • Write XPath and CSS selectors.
  • Interact with text fields, buttons, and forms.
  • Handle checkboxes and radio buttons.
  • Handle dropdowns.
  • Handle JavaScript alerts.
  • Work with frames and iframes.
  • Work with multiple windows and tabs.
  • Manage cookies.
  • Capture screenshots.
  • Execute JavaScript.
  • Use synchronization strategies.
  • Work with the Actions API.
  • Handle common WebDriver exceptions.
  • Build reusable Selenium automation code.
  • Use Page Object Model.
  • Integrate Selenium with a test framework.
  • Build a foundation for scalable Selenium automation frameworks.


 

79. Final Selenium WebDriver Concept Map

                    SELENIUM WEBDRIVER

                           |

          +----------------+----------------+

          |                |                |

          v                v                v

      Browser          WebElements       Navigation

          |                |                |

    +-----+-----+     +----+----+     +-----+-----+

    |     |     |     |    |    |     |     |     |

 Chrome Firefox Edge  Find Click Input Back Forward

                       |

                       v

                    Locators

                       |

             +---------+---------+

             |         |         |

            ID      CSS/XPath   Name

             |

             v

                  Synchronization

                       |

                 +-----+-----+

                 |           |

              Implicit    Explicit

                 |

                 v

                Actions

                 |

        +--------+--------+

        |        |        |

      Mouse   Keyboard  Drag/Drop

        |

        v

    Browser Contexts

        |

   +----+----+---------+

   |         |         |

 Alerts    Frames   Windows/Tabs

   |

   v

Cookies / Screenshots / JavaScript

   |

   v

Test Framework

   |

   v

Page Object Model

   |

   v

Automation Framework

   |

   v

Regression / Functional / E2E Testing


 

80. Final Practice Checklist

Before considering Selenium WebDriver fundamentals complete, practice each of the following tasks:

  1. Launch Chrome using WebDriver.
  2. Open a website using get().
  3. Read the page title.
  4. Read the current URL.
  5. Navigate backward and forward.
  6. Refresh the page.
  7. Locate elements using ID.
  8. Locate elements using name.
  9. Locate elements using class name.
  10. Locate elements using CSS selectors.
  11. Locate elements using XPath.
  12. Enter text into a text field.
  13. Clear an input field.
  14. Click a button.
  15. Read element text.
  16. Handle checkboxes.
  17. Handle radio buttons.
  18. Handle standard dropdowns.
  19. Handle JavaScript alerts.
  20. Switch into an iframe.
  21. Switch between windows or tabs.
  22. Add and delete cookies.
  23. Take a screenshot.
  24. Execute JavaScript.
  25. Use explicit waits.
  26. Use the Actions API.
  27. Handle common WebDriver exceptions.
  28. Create a Page Object.
  29. Integrate Selenium with TestNG or JUnit.
  30. Build and execute a complete login automation project.

Once these concepts are comfortable, the next step is to organize them into a maintainable automation framework using Page Object Model, reusable utilities, test data management, reporting, parallel execution, Selenium Grid, and CI/CD integration.

whatsapp